package com.huiquan.framework.base;

/**
 * @author xulei Date 2015年7月9日 上午9:56:13
 * @version V1.0
 * @ClassName: ReturnCode
 * @Description: 提示编码和描述 <br/>
 * code 含义: <br/>
 * ----- 0: 成功 <br/>
 * ----- 1 开头: 系统错误 <br/>
 * ----- 2 开头: 验证失败 <br/>
 */
public enum ReturnCode {
    /**
     * 空.
     */
    EMPTRY("", ""),

    /**
     * SESSION 失效.
     */
    SESSION_TIME_OUT("20018", "SESSION 失效"),

    /**
     * 用户名或密码有误.
     */
    USERNAME_OR_PASSWORD_ERROR("20010", "用户名或密码有误"),

    /**
     * 成功.
     */
    SUCCESS("0", "成功"),

    /**
     * 系统繁忙，请稍候再试.
     */
    RESTRICT_SYSTEM_BUSY("10000", "系统繁忙，请稍候再试"),

    /**
     * 后台运行错误.
     */
    EXCEPTION("30000", "当前数据错误，请联系系统管理员！"),

    /**
     * 动态提示信息.
     */
    DYNAMIC_DESC_EXCEPTION("30001", ""),

    /**
     * 参数错误.
     */
    PARAM("20000", "参数错误"),

    /**
     * 空指针错误.
     */
    EXCEPTION_NULL_POINT("30001", "空指针错误"),

    /**
     * 同义词少于两个.
     */
    SYNONYMY_LESS_THAN_TWO("40001", "同义词少于两个"),

    /**
     * 同义词已存在历史记录.
     */
    SYNONYMY_EXISTS("40002", "同义词已存在历史记录"),

    /**
     * 指标已存在相同名称数据.
     */
    INDEXES_NAME_EXISTS("40003", "指标已存在相同名称"),

    /**
     * 属性不能为空.
     */
    PROPERTY_IS_EMPTY("40004", "属性不能为空"),

    /**
     * 合并的数量不能小于2.
     */
    MERGE_NUM_LESS_THAN_TWO("40005", "合并的数量不能小于2"),

    /**
     * 合并的同义词属性不一致.
     */
    MERGE_PROPERTY_NOT_EQUALS("40006", "合并的同义词属性不一致"),

    /**
     * 包内句子未全部标注.
     */
    PACKAGE_SENTENCE_UNFINISHED("40007", "该批句子未全部标注，请标注完成后提交。"),

    /**
     * 标准词存在相同名称数据.
     */
    STD_EXISTS("40008", "标准词存在相同名称数据"),

    /**
     * 疾病的一级不是一种疾病名称.
     */
    ICD_CATEGORY_NOT_EXISTS("40009", "一级不是一种疾病名称"),

    /**
     * 编码对应的类目不存在.
     */
    ICD_GPDISEASE_NOT_EXISTS("40010", "编码对应的类目不存在"),

    /**
     * 编码对应的亚目不存在.
     */
    ICD_PDISEASE_NOT_EXISTS("40011", "编码对应的亚目不存在"),

    /**
     * 编码已存在.
     */
    ICD_CODE_EXISTED("40012", "该编码已存在，请检查后重试！"),

    /**
     * 名称为一个曾用名.
     */
    NAME_IS_A_FORMER_NAME("40013", ""),

    /**
     * 导入失败.
     */
    IMPORT_ERROR("40014", ""),

    /**
     * 导出失败.
     */
    EXPORT_ERROR("40015", ""),

    /**
     * 疾病同义词中有效疾病数量超过两个.
     */
    SYNONYMY_VALID_DISEASE_MORE_THAN_2("40016", ""),

    /**
     * 基础小词确认错误词是否可以转化为正确.
     */
    VOCAB_ELEMENT_CONFIRM_WORNG_CHANGE_TO_RIGHT("40017", ""),

    /**
     * 基础小词全部提交时没有处理完成错误.
     */
    VOCAB_ELEMENT_NOT_COMPLEMENT("40018", ""),

    /**
     * 基础小词替换时不满足条件.
     */
    VOCAB_ELEMENT_REPLACE_ERROR("40019", ""),

    /**
     * 脏数据错误.
     */
    DIRTY_DATA_ERROR("40020", "后台数据有变化，请刷新后重试！"),

    /**
     * 没有数据可以导出.
     */
    EXPORT_NO_DATA("40021", "没有数据可以导出"),

    /**
     * 该检验大类名称已存在.
     */
    TESTING_CLASS_NAME_EXIST("40022", "该检验大类名称已存在"),

    /**
     * 疾病名称不存在.
     */
    DISEASE_NAME_IS_NULL("40023", "疾病名称不存在！"),

    /**
     * 基础小词提交时不满足条件.
     */
    VOCAB_ELEMENT_CHECK_ERROR("40024", ""),

    /**
     * 分词与句子不匹配.
     */
    ANALYSIS_VOCABULARYS_CHECK_ERROR("40025", "分词与句子不匹配"),

    /**
     * 两个同义词疾病的性别年龄不一致.
     */
    ICD_DIEASE_SYNONYMY_SEX_AGE_CLASH("40026", ""),

    /**
     * 规则之间有冲突.
     */
    ANALYSIS_RULE_CLUSH("40027", ""),

    /**
     * 该批词语不再同一条同义词中
     */
    SYNONYMY_WORDS_NOT_IN_SAME_DATA("40028", "该批词语不再同一条同义词中"),

    /**
     * 小词拆词参数有误
     */
    ELEMENT_SPLIT_PARAM_ERROR("40029", ""),

    /**
     * 小词拆词有误
     */
    ELEMENT_SPLIT_ERROR("40030", ""),

    /**
     * 小词页面提交校验结果.
     */
    ELEMENT_CHECK_PAGE_ERROR("40031", ""),

    /**
     * 小词类别名称重复.
     */
    ELEMENT_CATEGORY_NAME_REPEAT("40032", "小词类别名称重复！"),

    /**
     * 检验大类rank上移错误
     */
    TESTING_CLASS_MOVE_HIGHEST_ERROR("40033", "当前位置已最高，无法上移"),

    /**
     * 检验大类rank下移错误
     */
    TESTING_CLASS_MOVE_LOWEST_ERROR("40034", "当前位置已最低，无法下移"),

    /**
     * 压缩文件包含多余目录错误
     */
    IMPORT_ZIP_DIRECTORY_ERROR("40035", "导入失败，压缩文件不应该包含多余目录"),

    /**
     * 该疾病图片名称已经存在.
     */
    DISEASE_IMAGE_NAME_EXIST("40036", "该疾病图片名称已经存在"),

    /**
     * 属性t同义词不能合并.
     */
    T_PROPERTY_NOT_MERGE("40037", "t属性同义词不能合并"),

    /**
     * 属性t同义词量化不同.
     */
    T_PROPERTY_SYNONYMY_QUANTIZATION_NOT_EQUEL("40038", "t属性同义词量化不相同"),

    /**
     * 科室图片rank上移错误
     */
    SECTION_IMAGE_MOVE_HIGHEST_ERROR("40038", "当前位置已最高，无法上移"),

    /**
     * 科室图片rank下移错误
     */
    SECTION_IMAGE_MOVE_LOWEST_ERROR("40039", "当前位置已最低，无法下移"),

    /**
     * 词典添加中参数错误
     */
    DICTIONARY_ADD_FORMAT_ERROR("40040", "词典添加中参数错误"),

    /**
     * 词典添加中词典已存在
     */
    DICTIONARY_ADD_EXISTS("40041", "词典中已存在该词"),

    /**
     * APPKEY错误
     */
    APPKEY_ERROR("10001", "appkey错误"),
    
    /**
     * 修改内容与该词的同义词不符
     */
    SETAGE_ERROR("40042", "修改内容与该词的同义词不符"),
    /**
     * 标注两个连续的B或者两个连续的M，而对应的position2不能为空
     */
    ANALYSIS_POSITION_CHECK_ERROR("40043", ""),

    /**
     * 生成position2=0的数据进行重新标注
     */
    ANALYSIS_FINISHED_M0("40044", "保存，成功"),

    /**
     * 标注句子分类---需要重定向回句子分类-未标注
     */
    REDIRECT_UNLABEL_MARK_SENTENCE("40045", ""),

    /**
     * 标注句子分类---需要重定向回句子分类-已标注
     */
    REDIRECT_LABEL_MARK_SENTENCE("40046", "")
    ;

    private String code; // 编码
    private String desc; // 描述

    /**
     * <p>
     * Title: .
     * </p>
     * <p>
     * Description:
     * </p>
     *
     * @param code ??
     * @param desc ??
     */
    private ReturnCode(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * @return String Date: 2015年7月10日 上午11:15:04
     * @Title：getCode
     * @Description: TODO
     * @Creator: xxx
     * @version V1.0
     */
    public String getCode() {
        return code;
    }

    /**
     * @return String Date: 2015年7月10日 上午11:15:10
     * @Title：getDesc
     * @Description: TODO
     * @Creator: xxx
     * @version V1.0
     */
    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public void setCode(String code) {
        this.code = code;
    }

    @Override
    public String toString() {
        return "code: " + code + ", desc: " + desc;
    }

    public static ReturnCode cloneCode(ReturnCode temp) {
        ReturnCode rc = ReturnCode.EMPTRY;
        rc.setCode(temp.getCode());
        rc.setDesc(temp.getDesc());

        return rc;
    }
}